package com.lw.service.impl;

import com.lw.entity.TbMenu;
import com.mybatisflex.core.query.QueryChain;
import com.mybatisflex.spring.service.impl.ServiceImpl;
import com.lw.entity.TbRoleMenu;
import com.lw.mapper.TbRoleMenuMapper;
import com.lw.service.TbRoleMenuService;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;

import static com.lw.entity.table.TbMenuTableDef.TB_MENU;
import static com.lw.entity.table.TbRoleMenuTableDef.TB_ROLE_MENU;

/**
 * 角色菜单关系 服务层实现。
 *
 * @author lw
 * @since 2025年04月29日 15:37:35
 */
@Service
public class TbRoleMenuServiceImpl extends ServiceImpl<TbRoleMenuMapper, TbRoleMenu> implements TbRoleMenuService {


    @Override
    public List<TbMenu> getMenuByRoleId(Integer id) {
        //根据角色查询权限列表
        QueryChain<TbRoleMenu> queryChain = queryChain().select(TB_MENU.ALL_COLUMNS)
                .from(TB_MENU)
                .leftJoin(TB_ROLE_MENU).on(TB_ROLE_MENU.MENU_ID.eq(TB_MENU.ID));
        if (id != null){
            queryChain.where(TB_ROLE_MENU.ROLE_ID.eq(id));
        }
        List<TbMenu> menuList = queryChain.listAs(TbMenu.class);
        Set<TbMenu> menuSet = new LinkedHashSet<>(menuList);
        return  new ArrayList<>(menuSet);
    }
}
